﻿package com.Galaxisfarm {
	// Bibliotecas da game engine Flixel
	import com.adamatomic.flixel.*;
	
	// Bibliotecas para gerenciar o teclado
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	
	public class NameState extends GameState {		
		// Variável do campo input
		private var _input_text:FlxInputText;
		
		// Método construtor
		public function NameState():void {		
			super();
			
			// Adiciona o background no palco
			var backgroundCerrado:BackgroundCerrado = new BackgroundCerrado(20, 20);
			backgroundCerrado.play("animate");
			_lyr_stage.add(backgroundCerrado);
			
			// Texto explicativo
			_lyr_sprites.add(new FlxText(0, 40, FlxG.width, 80, "Digite o nome do jogador", 0xffffffff, null, 26, "center"));
			
			// Label do nome do jogador
			_lyr_sprites.add(new FlxText(150, (FlxG.height / 2) - 54, 195, 60, "Nome:", 0xffffffff, null, 20, "left"));
			
			// Campo para o jogador digitar o seu nome
			_input_text = new FlxInputText(235, (FlxG.height / 2) - 54, 295, 30, null, 0xffffff, null, 20, "left");
			_input_text.borderVisible = true;
			_input_text.backgroundColor = 0x25155E;
			_lyr_sprites.add(_input_text);
			
			// Botão OK
			_lyr_sprites.add(new FlxButton((FlxG.width / 2) + 10, (FlxG.height / 2), new FlxSprite(null, 0, 0, false, false, 180, 30, 0xff25155E), tryChangeState, new FlxSprite(null, 0, 0, false, false, 180, 30, 0xffE46713), new FlxText(0, 1, 180, 30, "OK", 0xffffff, null, 20, "center"), new FlxText(0, 1, 180, 30, "OK", 0xffffff, null, 20, "center")));
			
			// Ouvinte para o teclado
			addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
			
			// Mensagem versão beta
			addVersionBeta();
		}
		
		// Método chamado quando o botão OK é clicado
		private function tryChangeState():void {
			// Só muda o estado do jogo se o jogador digitar o seu nome
			if (_input_text.getText() != "") {
				Farm.setPlayerName(_input_text.getText());
				FlxG.switchState(StoryState);	
			} else {
				dialogBoxError("Você precisa digitar o seu nome.");
			}
		}
		
		// Método que é chamado quando alguma tecla do teclado
		// é pressionada
		private function keyDownHandler(event:KeyboardEvent):void {
			if (event.keyCode == Keyboard.ENTER) {
				tryChangeState();
			}
		}
	}
}